package com.quectel.cms.controller;

import com.quectel.constant.global.valid.ValidSaveGroup;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.Range;

import javax.validation.Valid;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.util.List;

/**
 * @AssertFalse 可以为null, 如果不为null的话必须为false
 * @AssertTrue 可以为null, 如果不为null的话必须为true
 * @DecimalMax 设置不能超过最大值
 * @DecimalMin 设置不能超过最小值
 * @Digits 设置必须是数字且数字整数的位数和小数的位数必须在指定范围内
 * @Future 日期必须在当前日期的未来
 * @Past 日期必须在当前日期的过去
 * @Max 最大不得超过此最大值
 * @Min 最大不得小于此最小值
 * @NotNull 不能为null，可以是空
 * @Null 必须为null
 * @Pattern 必须满足指定的正则表达式
 * @Size 集合、数组、map等的size()值必须在指定范围内
 * @Email 必须是email格式
 * @Length 长度必须在指定范围内
 * @NotBlank 字符串不能为null, 字符串trim()后也不能等于“”
 * @NotEmpty 不能为null，集合、数组、map等size()不能为0；字符串trim()后可以等于“”
 * @Range 值必须在指定范围内
 * @URL 必须是一个URL
 * ————————————————
 * 版权声明：本文为CSDN博主「飘渺Jam」的原创文章，遵循CC 4.0 BY-SA版权协议，转载请附上原文出处链接及本声明。
 * 原文链接：https://blog.csdn.net/jianzhang11/article/details/119632467
 * @author: caolu
 * @email: louis.cao@quectel.com
 * @date: 2022-05-10 19:25:00
 */
@Data
public class CheckParamVo {

    @NotBlank(message = "姓名不能为空")
    @Length(min = 1, max = 80)
    private String name;

    @Range(min = 10, max = 200, message = "错误的年龄范围")
    private Integer age;

    @NotNull
    @DecimalMin(value = "10.00", message = "分成比例最小10%")
    //只有保存的时候生效
    @DecimalMax(value = "87.05", message = "分成最大比例不大于87.05%", groups = ValidSaveGroup.class)
    private BigDecimal rate;


    @Email(message = "请填写正确的邮箱地址")
    private String email;

    @Valid
    List<CheckParamVo> list;

}
